package com.hr.tuling.list;

/**
 * @author ：zhz
 * @date ：Created in 2020/11/24
 * @version: V1.0
 * @slogan: 天下风云出我辈，一入代码岁月催
 * @description:
 **/
public class DoubleLinkList {  // 双向链表

    private DNode head;        //头
    private DNode tail;        //尾

    public DoubleLinkList() {
        head=null;
        tail=null;
    }
    public void insertHead(int data){//插入头部
        DNode newNode=new DNode(data);
        if (head==null){
            tail=newNode;
        }else{
            head.pre=newNode;
            newNode.next=head;
        }
        head=newNode;
    }
    public void deleteHead(){//删除头部
        if (head==null){//没有数据
            return;
        }
        if(head.next==null){//表示只有头节点
            tail=null;
        }else{
            head.next.pre=null;
        }
        head=head.next;//把第二个节点置为当前头节点
    }
    public void deleteKey(int data){//删除指定的数据
        DNode current=head;
        while (current.value!=data){
            if (current.next==null){
                System.out.println("无节点");
                return;
            }
            current=current.next;//向后移一位
        }
        if (current==head){//表示删除头节点
            deleteHead();
        }else{
            current.pre.next=current.next;
            if (current==tail){//删除尾部
                tail=current.pre;
                current.pre=null;
            }else{
                current.next.pre=current.pre;
            }
        }
    }
}
